if(i>100)break;为什么当i>100时就出现死循环,i<100都不会的?

来源:百度知道 编辑:UC知道 时间:2024/05/28 20:34:23
#include "stdio.h"
void main()
{
int i=100;
while(1)
{
i=i%100+1;
if(i>100)break;
printf("%5d",i);
}

}

i=i%100+1;
试着往里边随便的带入几个数
首先来个100以下的 20吧。;
i=20%100+1=21;
再来个100以上的 就10045吧
i=10045%100+1=46;
I的最大值会是100;当I=99的是i=i%100+1的指挥使100;
所以永远没有i>100的时候,也就不会执行Break,进而陷入死循环

假设死循环:
i=100;
i=1;
i=2;
i=3;
i=4;
……
i不可能大于100;
所以if(i>100)永远进不去;
没法执行break;
而if(i<100);
明显i=1;就成立了!

i=i%100+1; 无论什么时候i的值都不会大于100,不信可以插入printf("%d\n", i);看看,最好这样改一下:
#include <stdio.h>

void main()
{
int i=100;
while(1)
{
i=i%100+1;
if(i>=100)break;
printf("%5d",i);
}

你确定 i<100的时候不死循环么?再试试吧

都是要死循环的

顺便说一句 include "stdio.h" 这里引号改成 <>比较好

因为无论循环多少次,i的值都不会大于100,也就不可能执行if(i>100)break;这条语句,也就不可能结束了。会出现死循环。

i=i%100+1;该表达式的值永远小于100,循环不会结束